package com.bjsxy.user;

import java.lang.reflect.Method;

/*反射案例  动态*/
/*点击 Edit Configurations 在Program arguments  写上方法名，设定运行顺序  用空隔键隔开*/
public class Test {
    public static void main(String[] args) throws Exception{
        ReflectDemo rd = new ReflectDemo();
        //如果有给定参数，则按给定的运行，如果没有则按原来顺序运行
        //由main方法中的String类型的参数agrs 决定运行次数
        if(args !=null && args.length>0){
            //获取ReflectDemo的Class对象
            Class clazz = rd.getClass();
            //通过反射，获得方法
            Method[] methods = clazz.getMethods();
            //首先遍历在main方法设定的方法，再与对象下的方法进行比较匹配
            for(String str:args){
                for(int i=0;i< methods.length;i++){
                  //  equalsIgnoreCase() 两个数对比 忽略大小写
                    if(str.equalsIgnoreCase(methods[i].getName())){
                        methods[i].invoke(rd);
                        break;
                    }
                }
            }
        }else {
            rd.method1();
            rd.method2();
            rd.method3();
        }

    }
}
